/**
 * ajax请求
 */
import store from '@/store'
import config from '@/config'
import { getToken} from '@/utils/auth'
import { toast, showConfirm,tansParams  } from '@/utils/common';
import { showModal } from '@/utils/popup.js';

const baseUrl = config.baseUrl;


/**
 * get请求
 */
export const getRequest = (url,data) => {
  return request(url, 'GET',data);
};

/**
 * post请求
 */
export const postRequest = (url, data) => {
  return request(url, 'POST', data);
};

/**
 * 通用请求封装
 */
export const request = function (url, method, data) {
  return new Promise((resolve, reject) => {
    uni.request({
      url: baseUrl + url, //拼接请求路径
      data: data,
      method: method,
      header: {
        'Authorization': getToken(),
      },
      success: (response) => {
        handleResponse(response, resolve, reject,url);
      },
      fail: (error) => {
        reject(error);
      },
    });
  });
};

// ================================= 文件上传请求 =================================

export const uploadRequest = function (filePath) {
  return new Promise((resolve, reject) => {
    uni.uploadFile({
      url: baseUrl + '/sys/file/upload',
      filePath,
      header: {
        'Authorization': getToken(),
      },
      name: 'file',
      success: (response) => {
        response.data = JSON.parse(response.data.replace('\uFEFF', ''));
        handleResponse(response, resolve, reject);
      },
      fail: (error) => {
        reject(error);
      },
    });
  });
};

/**
 * 处理返回的消息
 */
function handleResponse(response, resolve, reject,url) {
  const res = response.data;
  const code = res.code;
  if (code && code !== 0) {
    if (code === 400) {
	  showConfirm('登录状态已过期，您可以继续留在该页面，或者重新登录?').then(res => {
		if (res.confirm) {
			store.dispatch('LogOut').then(res => {
				uni.navigateTo({ url: '/pages/user/mobile-login' })
			})
		}
	  })
	  reject('无效的会话，或者会话已过期，请重新登录。')
	}else if(code === 401){
		// #ifdef MP-WEIXIN
		// showConfirm('还未授权，不能访问，请先登录?').then(res => {
		// 	if (res.confirm) {
		// 		store.dispatch('LogOut').then(res => {
		// 			uni.reLaunch({ url: '/pages/user/mobile-login' })
		// 		})
		// 	}
		// 	if(res.cancel){
		// 		uni.navigateBack();
		// 	}
		// })
		// #endif
		
		// #ifdef H5
		// showModal({
		// 	title: '尊敬的用户：',
		// 	message: '您好，根据法律法规及监管政策要求，在使用前请您阅读并确定了解<text style=\"color:red;\">《京轻工惠服务用户协议》、《京轻工惠服务用户隐私协议》</text>如您同意，请点击"同意并使用"开始使用我们的产品及服务，我们尽全力保护您的个人信息安全。',
		// 	confirmText: '同意并继续使用',
		// 	cancelText: '下次在说',
		// }).then(() => {
		//     console.log('用户点击了确定');
		// 	store.dispatch('LogOut').then(res => {
		// 		uni.reLaunch({ url: '/pages/user/mobile-login' })
		// 	})
		// }).catch(() => {
		//     console.log('用户点击了取消');
		// 	uni.navigateBack();
		// });
		// #endif
		uni.clearStorageSync();
		if(url){
			if(url.includes('events/activity_brisk_walk/join/new/user')){
				resolve(res);
			}else {
				uni.navigateTo({
					url:'/pages/user/mobile-login'
				})
				reject('请先登录')
			}
		}else{
			uni.navigateTo({
				url:'/pages/user/mobile-login'
			})
			reject('请先登录')
		}
		
		
	}else if(code === 500){
		toast(res.msg);
		reject(res.msg)
	}else if(code === 405 || code === 406){
		//账号未绑定微信
		resolve(res);
	}else {
		toast(res.msg);
		reject('请求异常');
	}
  } else {
    resolve(res);
  }
}
